# 设置 CMake 的最低版本要求和项目名称
cmake_minimum_required(VERSION 3.10)
# 项目名称可以被用作变量等多种用途。
project(example)
 
# 这行命令让 CMake 寻找 Python 3.6 版本（或更高）的库。REQUIRED 表示这个包是必需的；如果找不到，CMake 会报错。
find_package(PythonLibs 3.6 REQUIRED)
# 这行命令让 CMake 寻找 Pybind11 库。同样地，REQUIRED 表示 Pybind11 是构建此项目所必需的。
find_package(pybind11 REQUIRED)
 
# 这个命令用于向项目添加头文件搜索路径。
# 这里，${PYTHON_INCLUDE_DIRS} 和 ${pybind11_INCLUDE_DIRS} 是由 find_package 命令找到的 Python 和 Pybind11 的头文件目录。
# 这确保了编译器可以找到所有必需的头文件。
#include_directories(${PYTHON_INCLUDE_DIRS})
#include_directories(${pybind11_INCLUDE_DIRS})
 
# 这行命令定义了一个名为 example 的 python 扩展包，它将从 example.cpp 源文件构建而成。
#add_library(example MODULE example.cpp)
pybind11_add_module(example example.cpp)
 
# 指定了构建 example 时需要链接的库。
# ${PYTHON_LIBRARIES} 是 find_package(PythonLibs) 命令找到的 Python 库，
# 而 pybind11::pybind11 是 Pybind11 提供的目标，用于链接 Pybind11 库。这确保了项目在链接时能找到所有必要的库。
#target_link_libraries(example ${PYTHON_LIBRARIES} pybind11::pybind11)

